workspaceThumbnail: Clean up porthole/workarea setting and updating
Instead of unnecessarily updating the porthole on every call to the
layout vfuncs and returning widths and heights of 0 when the overview is
hidden, only update it on actual workarea changes.
Also use the stage size for the porthole in case no monitor is available
to make sure we don't try to allocate a 0-sized box.